// 引入所需模块：http（创建服务器）、fs（文件操作）、path（路径处理）
const http = require('http');
const fs = require('fs');
const path = require('path');

// 1. 处理命令行参数，确定要读取的目标文件
// process.argv[0]为node.exe路径，process.argv[1]为当前文件路径，process.argv[2]为用户传入参数
const targetFile = process.argv[2] 
  ? path.join(__dirname, process.argv[2]) // 若有参数，拼接当前目录与目标文件路径
  : __filename; // 若无参数，默认读取当前文件（fileReader1.js）

// 2. 创建HTTP服务器，监听8081端口
const server = http.createServer((req, res) => {
  // 设置响应头：状态码200（成功），内容类型为纯文本（支持中文）
  res.writeHead(200, { 'Content-Type': 'text/plain; charset=utf-8' });

  // 3. 使用异步方法fs.readFile读取文件
  fs.readFile(targetFile, 'utf8', (err, data) => {
    if (err) {
      // 处理文件读取错误（如文件不存在、权限不足等）
      const errorMsg = `错误：无法读取文件 "${targetFile}"\n原因：${err.message}`;
      res.end(errorMsg); // 将错误信息响应给浏览器
      console.error(errorMsg); // 同时在控制台打印错误
      return;
    }

    // 读取成功：响应文件内容，包含友好提示
    const responseContent = `成功读取文件：${targetFile}\n\n文件内容：\n${data}`;
    res.end(responseContent);
    console.log(`已向客户端响应文件 "${targetFile}" 的内容`);
  });
});

// 4. 启动服务器并监听端口
server.listen(8081, () => {
  console.log(`服务器已启动，监听端口 8081`);
  console.log(`当前读取目标：${targetFile}`);
  console.log(`请访问：http://localhost:8081 查看结果`);
});